package _a;
import java.io.File;
import com.wili.c.Class9;
import com.wili.c.MiscFilter.ClsFilter;
import com.wili.extract_srcFile.java.Cont26;
import com.wili.insertLog.JarFilePackageNameSet;
import com.wili.misc.Time9;
/**
 * 
 * @author weila 2021年2月14日 
 */
public class ExtractConf {
	/**
	 * 	Location of app data file.
	 * 	必要的数据文件写入此目录，用户无需关心，必要时或需手动清除其中文件。
	 */
	public static final File ConfRoot = new File("c:/t/insertLog");

	/**
	 * Never extract un-accepted class(eg. class in jar file)
	 */
	public static final ClsFilter CLASS_Filter = new ClsFilter() {
		/**
		 * @return return false: never extract given class.
		 */
		@Override
		public boolean accept(Class<?> cls) {
			if (cls.isArray() || cls.isPrimitive())
				return false;
			String name = cls.getPackageName();
			if (name.startsWith("java.") || name.startsWith("javax."))
				return false;
			if (!ExploreJarClass && JarFilePackageNameSet.contains(name))
				return false;
			if ("".isEmpty()) {//一次扫描后就不需要重复检查了.
				if (Boolean.FALSE)
					Time9.time(1, "CLASS_Filter");
				File file = Class9.jarFileOrClassRootOf(cls);//slow.
				if (file == null || file.isFile()) {
					if (file != null)
						Cont26.JarFileList.add(file.getAbsolutePath());
					JarFilePackageNameSet.add(name);
					return false;//class in jar file.
				}
			}
			return true;
		}
	};

	/**
	 * 	统计并提示所引用的jar包（有较大耗时）
	 */
	static boolean ExploreJarClass = "".isEmpty();
}